#include <stdio.h>
#include <stdlib.h>
#include <unistd.h> // 包含sleep函数

int main() {
    size_t size_in_bytes = 32L * 1024 * 1024 * 1024; // 2GB大小
    printf("申请 %zu 字节内存...\n", size_in_bytes);

    // 动态分配内存
    char *memory = (char *)malloc(size_in_bytes);
    if (memory == NULL) {
        printf("内存分配失败！可能是内存不足。\n");
        return 1;
    }

    printf("初始化内存...\n");

    // 写入数据以触发实际分配
    for (size_t i = 0; i < size_in_bytes; i += 4) { // 每4KB写一次，触发页分配
        memory[i] = 0;
    }

    printf("内存已初始化！等待10秒...\n");

    // 等待10秒
    sleep(10);

    // 释放内存
    free(memory);
    printf("内存已释放。\n");

    return 0;
}
